ruby-on-rails - Activerecord批量赋值给虚拟属性

标签 ruby-on-rails ruby activerecord

我正在发布以下数据:

{"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/

相关文章:

ruby-on-rails - Geokit Rails 距离和查找(:all)

ruby-on-rails - 在 RoR 中编写嵌套表单

ruby-on-rails - 使用 Rails 安装语义 UI

ruby-on-rails - 1 个错误禁止保存此 {{model}}

ruby - 如何优化 ActiveRecord find_in_batches 查询?

ruby-on-rails - Rails 4 : Sort by associated created_at if present, 否则由父级

ruby-on-rails - mod_passenger 选项 - 无效命令

ruby - 在 Ruby 1.9.3 中使用 %x 调用 pwd 是否存在任何已知问题?

ruby-on-rails - has_many :through with counter_cache

ruby-on-rails - Rails 可选的 belongs_to