我正在玩rails console:
a = Event.where("location_id IS NULL")
Event Load (0.7ms) SELECT "events".* FROM "events" WHERE (start_date >= '2015-02-20' OR end_date >= '2015-02-20') AND (location_id IS NULL)
=> #<ActiveRecord::Relation [#<Event id: 58, name: "BENNY GREB CLINIC w Hard Rock Cafe Warszawa", start_date: "2015-02-21", end_date: nil, location: "Hard Rock Cafe Warsaw,ul. Złota 59,Warsaw,Poland", logo_url: "https://fbcdn-sphotos-c-a.akamaihd.net/hphotos-ak-...", website: "", facebook: "https://www.facebook.com/events/535924839876600", created_at: "2015-02-19 17:38:29", updated_at: "2015-02-19 17:38:29", logo_file_file_name: nil, logo_file_content_type: nil, logo_file_file_size: nil, logo_file_updated_at: nil, location_id: nil>]>
所以location: "Hard Rock Cafe Warsaw,ul. Złota 59,Warsaw,Poland"
但是当我这样做时:
2.2.0 :002 > a.first.location
我得到了
=> nil
为什么?
答案 0 :(得分:2)
您有一个位置属性和位置关联,并且rails正在使用该关联。您需要重新考虑数据库结构,以便命名不同。
答案 1 :(得分:1)
根据问题中的第一条评论:
您可能正在使用有效记录关联:
has_one :location
或
belongs_to :location
活动记录将优先考虑模型属性的关系。
尝试添加:
has_one/belongs_to :location, as: 'related_location'
对模型以确保位置始终定义属性。您将使用别名方法访问相关位置(使用location_id
)。