我有一个表名策略,它是这样的:
+---+ +----+ +---+
|id | | a | | b
+---+ +----+ +---+
|1 | | 1 | | 2 |
|2 | | 2 | | 3 |
|3 | | 2 | | 4 |
|4 | | 4 | | 1 |
|5 | | 4 | | 4 |
+---+ +----+ +---+ 我有一个类名计划,看起来是:
class Plan < ActiveRecord::Base
attr_accessible :a, :b
has_one :strategy ...................
end现在我想填充这个空的has-one关系。策略表有列a和b,两列总是有不同的组合,如表所示。现在,我不知道如何在两个表之间建立关系,因为策略表既不属于Plan,也不属于Plan表存储策略表id。策略表仅包含一些静态值。但是,计划有一定的a和b值,我希望在计划的a值和b值的基础上,使用has_one关系来确定战略表的id。在rails中是否可以这样做,或者我需要遵循一些旧的逻辑。
发布于 2013-11-18 10:00:09
您可以手动构建关联。
在你的计划模型中
def strategy
@strategy ||= Strategy.where("a = ? AND b = ?", a, b).first
end这将使您在代码中引用my_plan.strategy。
编辑答案更新,包括钱德拉舒的优秀建议..。回忆录和处理具有重复a,b值的多个策略的情况
https://stackoverflow.com/questions/20044693
复制相似问题