我正在发布以下数据:
{"commit"=>"Create", "conversation"=>{... , "watchers_ids"=>["2", "3", "4", "5", ...]}}
到下面的 Action
def create
@conversation = @current_project.conversations.new(params[:conversation])
...
end
还有下面的类
class Conversation < RoleRecord
include Watchable
end
有了这个模块
module Watchable
def self.included(model)
model.attr_accessible :watchers_ids
end
def watchers_ids=(ids)
add_watchers( ids )
end
def watchers_ids
...
end
...
end
但是,批量分配不适用于虚拟属性。有什么想法吗?
最佳答案
那里缺少代码...
如果您有一个 has_and_belongs_to_many :watchers
,您应该能够分配 watcher_ids
而无需执行此自定义模块操作。
然后,如果您不能这样做,那么该属性将受到模型中某些 attr_protected
或更有可能是 attr_accessible
调用的保护。您可以手动设置它:
@conversation.watcher_ids = params[:conversation][:watcher_ids]
关于ruby-on-rails - Activerecord批量赋值给虚拟属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5032243/