Rails ::为什么属性更改不会持续存在?

时间:2011-10-22 21:00:45

标签: ruby-on-rails ruby-on-rails-3 mongoid

控制器:

@events = Event.all
@events.each { |e| e.user_subscribed = "someuser" }
@events.each { |e| puts "error" + e.user_subscribed }

我有attr_accessor :user_subscribed。但是错误是can't convert nil into String,因为e.user_subscribed评估为nil。

我在后端使用mongoid。

编辑:这有效,但它只是复制整个数组。

@events = @events.map do |e|
  e.user_subscribed = "faaa"
  e
end

2 个答案:

答案 0 :(得分:2)

如果您没有将@events保存到数据库,则user_subscribed将不会保留,除非您将其保留在内存中:

@events_with_subscription = @events.map { |e| e.user_subscribed = "someuser"; return e }

答案 1 :(得分:1)

根据OP评论编辑。

听起来直接在视图中直接输出Event.user_subscribed(current_user)可能会更好......但是如果你想先加载所有数据,你可以这样做:

@array_of_subscription_results = @Events.map{|e| e.user_subscribed(current_user,some,other,var,required) }

只要user_subscribed返回您感兴趣的值,那就是将加载到@array_of_subscription_results的地图