我是ruby和rails的新手。我创建了一个使用acts_as_votable gem的rails应用。 gem包含一个类投票,我想用它作为我的应用程序的模型。有可能吗?
我尝试过使用rails g scaffold Vote
。这样我得到了一个空的投票模型和适当的控制器和视图。但是,因为acts_as_votable已经创建了一个名为votes /votes
的数据库表,显示了预先存在的投票而没有它们的属性。这同样适用于votes/new
,它没有显示任何输入字段,因为新的投票类是空的。
我还想过在我的应用程序中复制gem类,但我知道这是一个可怕的想法。
答案 0 :(得分:1)
只要你的Gemfile中有gem,你就可以通过指定它的命名空间来访问Vote
类:
ActsAsVotable::Vote
因此,您可以在使用其他模型时使用它。
也可以对类进行修补,例如在初始化程序中:
ActsAsVotable::Vote.send( :include, MyModule )
然后在另一个文件中:
module MyModule
extend ActiveSupport::Concern
included do
# class eval any macro you want...
end
module ClassMethods
def foo
# define class methods...
end
end
def bar
# define instance methods...
end
end
但是,我建议不要这样做。在您不拥有的类上构建业务逻辑的整个部分是危险的,并且不能直接使用!只要您添加次要功能,它就可以了,但如果您确实需要自定义行为,请继续并重新实现各种各样的'acts_as_votable`功能。
这不是那么困难也不长,你将拥有自己的逻辑,这将使你在升级时屏蔽Vote
类中不可预测的变化。
答案 1 :(得分:0)
您可以尝试将其与ActsAsVotable::Vote
一起使用,但我认为它应该与现有模型结合使用。