我为我的Rails应用程序安装了id和ActiveScaffold。
因为不是所有的模型都有唯一的名称字段,所以我必须使用段塞模型来使其工作。friendly_id做的工作完美无缺,我有友好的URL,我可以使用友好的id加载对象。
但是,当我想用ActiveScaffold创建一个新对象时,它会显示以下错误消息:
ActiveScaffold::ReverseAssociationRequired (关联段塞:为了支持父记录是新的并且子记录验证父记录是否存在的:has_one和:has_many,ActiveScaffold需要反向关联(Belongs_to))。
当然,我不能在这一边创建belongs_to关联,因为它是由friendly_id模块创建的,并且应该包含在其中的每个模型。
模型如下:
class FooBar < ActiveRecord::Base
has_friendly_id :name, :use_slug => true, :approximate_ascii => true
end在我的ApplicationController里
class Admin::FooBarsController < Admin::ApplicationController
active_scaffold :foo_bar do |config|
config.list.columns = [ :id, :name ])
config.update.columns = [ :name ]
config.create.columns = config.update.columns
end
end有办法让这件事成功吗?
版本: friendly_id 3.2.0,ActiveScaffold最新的rails-2.3 git分支。
更新:似乎它在生产模式中没有冲突。
发布于 2011-04-15 17:08:41
呼叫
has_friendly_id :name, :cache_column => 'cached_slug', :use_slug => true..。创建一个has_many和一个有一个关联,指向一个鼻涕虫AR模型,没有任何多态属于正确定义的关联。
因此,基本上,要解决这个错误,您需要在父模型的控制器(拥有friendly_id组件的控制器)中定义反向关联。
active_scaffold :products do |config|
...
config.columns[:slug].association.reverse = :product
config.columns[:slugs].association.reverse = :product
end它的作用是:)
PS :我使用friendly_id作为rails 3的gem和ActiveScaffold VHO主分支。
发布于 2011-01-20 17:52:54
在过去,我有同样的问题,我已经解决了,但我不记得我的解决方案,看看我的代码,唯一相关的黑客是使用friendly_id作为插件,并最终用config.plugin在environemnt.rb中加载它。
aviable_plugins = Dir.glob(RAILS_ROOT+"/vendor/plugins/*").collect {|i| i.split("/").last }
config.plugins = aviable_plugins + [:friendly_id] #friendly_id must be last我不确定,对不起,但如果你试着让我知道。
很抱歉我的英语
https://stackoverflow.com/questions/4750331
复制相似问题