Ruby on rails 从通过表单上载的文件访问嵌套属性资产上的属性写入程序
我有以下模型结构Ruby on rails 从通过表单上载的文件访问嵌套属性资产上的属性写入程序,ruby-on-rails,ruby-on-rails-3,file-upload,has-many-polymorphs,Ruby On Rails,Ruby On Rails 3,File Upload,Has Many Polymorphs,我有以下模型结构 class Asset < ActiveRecord::Base attr_writer :session_user_id ... end class Item < ActiveRecord::Base has_many :assets, :as => :assetable, :dependent => :destroy ... end 但我得到错误消息: “3”的未定义方法“资产”:字符串 我觉得我已经尝试了所有的变化。如何做到这一
class Asset < ActiveRecord::Base
attr_writer :session_user_id
...
end
class Item < ActiveRecord::Base
has_many :assets, :as => :assetable, :dependent => :destroy
...
end
但我得到错误消息:
“3”的未定义方法“资产”:字符串
我觉得我已经尝试了所有的变化。如何做到这一点?我在这里猜测,但是如何使用值而不是每个带有索引的\u呢
params[:item][:assets_attributes].values do |y|
y.asset.session_user_id=12
end
所以,有两件事 首先,
在散列
上调用每个带有索引的\u将为您提供。因为您将获得键
值
params[:item][:assets_attributes].each_with_index do |attr1, attr2|
puts attr1 # ["3", {"asset" => "MyAsset!"}]
puts attr2 # 0
attr1.each do |value|
puts value
# "3" on First Run
# {"asset" => "MyAsset!"} on Second Run
end
end
所以,如果你只是想搞乱这些价值观,那么我建议你采用这种方法。但这就引出了我们的第二个问题。访问散列
;您需要使用括号[]
而不是方法调用来完成
总的来说应该是这样的
params[:item][:assets_attributes].values.each do |y|
y[:session_user_id] = 12
end
隐马尔可夫模型。。。这似乎不起作用。我只是想获取与资产相关联的用户id。答案不应该这么难,这是有道理的,但它不起作用:-(我用的是回形针。可能不带任何资产试试?我重新阅读了你的问题,我认为
资产
是一个嵌入式模型。现在我意识到它实际上是资产
的一个属性。所以你只需将[:资产]从散列
索引中去掉即可。
params[:item][:assets_attributes].each_with_index do |attr1, attr2|
puts attr1 # ["3", {"asset" => "MyAsset!"}]
puts attr2 # 0
attr1.each do |value|
puts value
# "3" on First Run
# {"asset" => "MyAsset!"} on Second Run
end
end
params[:item][:assets_attributes].values.each do |y|
y[:session_user_id] = 12
end