模型
class GameResult < ActiveRecord::Base
has_many :games
end
class Game < ActiveRecord::Base
belongs_to :game_result
end
模式
create_table "game_results", force: :cascade do |t|
t.string "result"
end
create_table "games", force: :cascade do |t|
t.integer "game_result_id"
end
我目前可以通过调用
来检索结果@game.game_result.result
通过建立正确的关联,我相信我应该可以打电话
@game.result
我通过关联尝试了很多has_many / one的配置,但无济于事,例如:
class Game < ActiveRecord::Base
belongs_to :game_result
has_one :result, through: :game_result, source: :result
end
我很感激有关如何解决这个问题的任何建议。谢谢!
答案 0 :(得分:2)
class Game < ActiveRecord::Base
belongs_to :game_result
end
你想打电话
@game.game_result.result
为@game.result
你不能用关联来做,你需要使用rails'assocator
class Game < ActiveRecord::Base
belongs_to :game_result
delegate :result, to: :game_result, allow_nil: true
end
最后您可能不需要allow_nil,具体取决于您的具体情况。
基本上这只是
的简便方法class Game < ActiveRecord::Base
belongs_to :game_result
def result
return nil if game_result.nil?
game_result.result
end
end