gpt4 book ai didi

ruby-on-rails - 通过关联访问时未定义的方法和尝试使用 :dependent => :destroy 销毁时未初始化的常量

转载 作者:行者123 更新时间:2023-12-04 07:29:13 25 4
gpt4 key购买 nike

我一直尝试用谷歌搜索这个错误,但无济于事。我目前有这些模型

应用程序/模型/survey.rb

class Survey < ActiveRecord::Base
belongs_to :user
has_attached_file :original, :default_url => "/public/:class/:attachment/:basename.:extension"
has_many :sub_surveys, :dependent => :destroy
end

应用/模型/sub_survey.rb

class SubSurvey < ActiveRecord::Base
belongs_to :survey
has_many :questions, :dependent => :destroy
end

应用程序/模型/question.rb

class Question < ActiveRecord::Base
belongs_to :sub_survey
validates_presence_of :sub_survey
acts_as_list :scope => :sub_survey
#after_destroy :destroy_orphaned_choices

has_many :answers, :dependent => :destroy
has_many :choices, :dependent => :destroy
end

应用程序/模型/choice.rb

class Choices < ActiveRecord::Base
belongs_to :question
validates_presence_of :question
end

应用/模型/answer.rb

class Answer < ActiveRecord::Base
belongs_to :question
belongs_to :user
belongs_to :game
validates_uniqueness_of :question_id, :scope => [:user_id, :game_id]
end

现在当我试图销毁调查时,我得到一个错误

uninitialized constant Question::Choice

在 survey.destroy 之后跟踪/vendor/rails/active* 东西

然后,当我尝试访问 question.Choices 中的选项时,出现错误

undefined method `Choices' for #<Question:0xb7224f2c>

出于某种原因,它位于跟踪堆栈之上

vendor/rails/activerecord/lib/active_record/attribute_methods.rb:256:in `method_missing'
vendor/plugins/attribute_fu/lib/attribute_fu/associations.rb:28:in `method_missing'
app/views/answers/_answer.html.erb:7:in `_run_erb_47app47views47answers47_answer46html46erb'

我在导入 xml 格式的调查时确实使用了 attribute_fu,但我不知道为什么 question.Choices 的痕迹有它。

我还尝试将 choices 重命名为 choicealternatives,但这没有效果。

有什么想法吗?

最佳答案

您的 Choices 表已经有一个复数名称,这可能会导致问题。理想情况下,该表应称为 Choice,否则您的 has_many :choices 也应指定 class_name 选项。例如

has_many :choices, :class_name => 'Choices'

如果可以的话,我会选择重命名类和表 Choice

Attachment_fu 可能出现在堆栈跟踪中,因为他们已经覆盖或别名 method_missing 方法以添加他们自己的行为。不一定需要担心。

关于ruby-on-rails - 通过关联访问时未定义的方法和尝试使用 :dependent => :destroy 销毁时未初始化的常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1212423/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com