有没有办法为铁路注入一个关联?

时间:2011-05-09 10:51:53

标签: ruby-on-rails

例如,我有一个Guest模型,

虽然我在某些操作上使用Guest模型,但是id喜欢注入此关联(仅限于该操作)

belongs_to:category

我该怎么做?

3 个答案:

答案 0 :(得分:1)

听起来你可能正试图让你的代码变得有点聪明。虽然它可能会这样做,但它不是一个原生的功能,可能会引入很多hacky元编程,因此可能会出现一些令人讨厌的错误。我建议退后一步,看看你是否可以重新考虑你想要解决的问题。你在使用RESTful控制器吗?根据你的问题很难说,但是当你开始提出这样的问题时,通常答案是否定的。你的控制器有太多的逻辑吗?也许您尝试做的一些事情可以转移到模型上。如果您提供有关您正在做的事情的更多信息,您可能会得到更多有用的回复。

答案 1 :(得分:1)

理论上也许这是可能的,但在你的情况下它无法实现。 因为belongs_to是数据库问题,所以它意味着其中一个数据库表具有另一个表的id。 ActiveRecord只是包含所有这些功能,然后看起来你正在与Ruby对象进行交互。因此,您无法暂时更改数据库,然后以合理的价格即时更改。

答案 2 :(得分:1)

虽然我同意@Beerlington你可能想要太聪明,但这就是答案:

  1. 制作一个类似的模块:

    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
    
  2. 现在,在您的班级中加入该模块:

    class Guest < ActiveRecord::Base
        include Categorical
        ....
    
    end
    
  3. 你有它!

    如果您还要将named_scopes添加到您的分类类或其他辅助方法中,这可能很有用......