Массовое присвоение Activerecord виртуальному атрибуту - PullRequest
2 голосов
/ 17 февраля 2011

Я публикую следующие данные:

{"commit"=>"Create", "conversation"=>{... , "watchers_ids"=>["2", "3", "4", "5", ...]}}

К следующему действию

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

Однако массовое назначение не работает с виртуальным атрибутом.Есть идеи?

1 Ответ

0 голосов
/ 17 февраля 2011

Там нет кода, который там отсутствует ...

Если у вас есть has_and_belongs_to_many :watchers, вы сможете назначить watcher_ids без необходимости выполнять этот пользовательский модуль.

Тогда еслиВы не можете сделать это, тогда этот атрибут защищен каким-либо attr_protected или, более вероятно, attr_accessible вызовом в вашей модели.Вы можете установить его вручную:

@conversation.watcher_ids = params[:conversation][:watcher_ids]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...