Ruby on rails 有没有办法为rails动态注入关联?
比如说我有一个嘉宾模特 当我在某些操作上使用来宾模型时,我想注入这个关联(仅在该操作上) 属于:类别Ruby on rails 有没有办法为rails动态注入关联?,ruby-on-rails,Ruby On Rails,比如说我有一个嘉宾模特 当我在某些操作上使用来宾模型时,我想注入这个关联(仅在该操作上) 属于:类别 我如何做到这一点?听起来您可能想在代码方面变得更聪明一些。虽然这是可能的,但它不是一个本机特性,可能会引入很多黑客元编程,因此可能会引入一些讨厌的bug。我建议你退一步,看看你是否能重新思考你试图解决的问题。您正在使用RESTful控制器吗?根据你的问题很难说,但当你开始问这样的问题时,答案通常是否定的。你的控制器是否有太多的逻辑?也许你正在尝试做的一些事情可以转移到模型上。如果你提供更多关于你
我如何做到这一点?听起来您可能想在代码方面变得更聪明一些。虽然这是可能的,但它不是一个本机特性,可能会引入很多黑客元编程,因此可能会引入一些讨厌的bug。我建议你退一步,看看你是否能重新思考你试图解决的问题。您正在使用RESTful控制器吗?根据你的问题很难说,但当你开始问这样的问题时,答案通常是否定的。你的控制器是否有太多的逻辑?也许你正在尝试做的一些事情可以转移到模型上。如果你提供更多关于你正在做什么的信息,你可能会得到更多有用的回答。理论上可能是可能的,但在你的情况下,这是无法实现的。
因为
属于\u to
是一个数据库问题,这意味着一个数据库表的id指向另一个表。ActiveRecord只是包装了所有这些功能,然后看起来就像是在与Ruby对象交互。因此,您不能临时更改数据库,然后以合理的价格动态更改。虽然我同意@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
classguest
如果您还将命名的作用域添加到分类类或其他帮助器方法中,这可能很有用…为什么不在模型中正确定义它呢?除了使代码难以维护外,动态执行还有什么好处?要使该关联起作用,您需要来宾表中的一个键来引用该类别,因此它还是相对静态的。您可能可以使用
class\u eval
使其工作,但这是难以置信的脏,只会在以后绊倒您。只需在模型中设置它,并仅在需要时使用它。为什么要这样做?让它只在一个操作中设置和查看可能是有意义的,但关联需要在模型中保持一致。请详细解释您试图实现的目标,以及您认为它应该是动态的原因。嘿,大家好-感谢您的帮助。它适用于一些已经弃用的遗留代码。我需要它提供的数据,这就是为什么我只需要它的一部分——在迁移脚本中。是的,我确实在努力变得聪明。我不想将它放在模型中,我只需要将它放在代码的一部分中,放在迁移脚本中。谢谢,我还没有尝试过它,但看起来这正是我需要的!