例如,我有一个Guest模型,
虽然我在某些操作上使用Guest模型,但是id喜欢注入此关联(仅限于该操作)
belongs_to:category
我该怎么做?
答案 0 :(得分:1)
听起来你可能正试图让你的代码变得有点聪明。虽然它可能会这样做,但它不是一个原生的功能,可能会引入很多hacky元编程,因此可能会出现一些令人讨厌的错误。我建议退后一步,看看你是否可以重新考虑你想要解决的问题。你在使用RESTful控制器吗?根据你的问题很难说,但是当你开始提出这样的问题时,通常答案是否定的。你的控制器有太多的逻辑吗?也许您尝试做的一些事情可以转移到模型上。如果您提供有关您正在做的事情的更多信息,您可能会得到更多有用的回复。
答案 1 :(得分:1)
理论上也许这是可能的,但在你的情况下它无法实现。
因为belongs_to
是数据库问题,所以它意味着其中一个数据库表具有另一个表的id。 ActiveRecord只是包含所有这些功能,然后看起来你正在与Ruby对象进行交互。因此,您无法暂时更改数据库,然后以合理的价格即时更改。
答案 2 :(得分:1)
虽然我同意@Beerlington你可能想要太聪明,但这就是答案:
制作一个类似的模块:
module Categorical
def self.included(included_class)
included_class.instance_eval do
# from here to the end of this block, imagine that you are in the class
# source itself. Add associations or instance methods, for example
belongs_to :category
end
end
end
现在,在您的班级中加入该模块:
class Guest < ActiveRecord::Base
include Categorical
....
end
你有它!
如果您还要将named_scopes添加到您的分类类或其他辅助方法中,这可能很有用......