【发布时间】:2016-04-11 22:54:41
【问题描述】:
我正在使用 Rails 中的 Frozen Record gem 上传一个 YAML 文件,其中包含我的应用程序的一些固定问题。上传后,我想使用 SaleQualifier 模型来抓取每个问题,将其与答案相关联,然后将其用作状态机以在问题树中移动。
我已经让 Frozen Record gem 正常工作,并且 YAML 文件上传正常。当我尝试将模型与新模型(SaleQualifier)关联时,我得到了'method_missing': undefined method 'belongs_to' for Question:Class (NoMethodError)
因此,我添加了 include ActiveRecord::Associations 组件,以便让我将新记录与我的 SaleQualifier Question belongs_to :sale_qualifier- 相关联,但这会引发:
'method_missing': undefined method 'dangerous_attribute_method?' for Question:Class (NoMethodError)
根据我的搜索,当我已经事先声明了方法时,就会抛出这个错误。我不知道这是在哪里定义的,但从 Frozen_Record gem 文件中我可以看到他们设置了一个 FrozenRecord ,内容如下:
module FrozenRecord
class Base
extend ActiveModel::Naming
include ActiveModel::Conversion
include ActiveModel::AttributeMethods
include ActiveModel::Serializers::JSON
include ActiveModel::Serializers::Xml
end
end
我开始认为使用这个 gem 可能有点矫枉过正,也许我应该将我的问题加载到一个普通的 ActiveRecord::Base 模型中,但我喜欢 FrozenRecord 的想法,因为这正是我想要实现的。
我的代码:
class Question < FrozenRecord::Base
include ActiveModel::Validations
include ActiveRecord::Associations
validates :next_question_id_yes, :question_text, :answer_type, presence: true
belongs_to :sale_qualifier
self.base_path = 'config/initializers/'
end
销售限定符:
class SaleQualifier < ActiveRecord::Base
has_many :questions
end
谁能帮我解开我似乎陷入的烂摊子?也许我应该从 FrozenRecord 中挖掘出 YAML 上传函数并将它们转储到我的 Question 模型中,而不使用 gem。
【问题讨论】:
标签: ruby-on-rails activerecord yaml