图像的未定义方法“arel_table”:模块?

时间:2014-07-27 17:01:36

标签: ruby-on-rails activerecord

我尝试使用has_many:通过this文档之后的关联。

我有3个模特

发布

class Post < ActiveRecord::Base

  has_many    :image_posts
  has_many    :images, :through => :image_posts

end

图像

class Image < ActiveRecord::Base

  has_many    :image_posts

  has_many    :posts, :through => :image_posts

end

和ImagePost

class ImagePost < ActiveRecord::Base
  belongs_to :images
  belongs_to :posts
end

当我尝试:

post = Post.last
post.images

我收到"undefined method "arel_table" for Images:Module"错误。

什么是arel_table以及如何解决此错误? 感谢。

2 个答案:

答案 0 :(得分:3)

定义belongs_to关联时出现问题。它应该总是单一的

class ImagePost < ActiveRecord::Base
  belongs_to :image
  belongs_to :post
end

答案 1 :(得分:0)

由于帮手,我遇到了这个问题。

undefined method `arel_table' for Talent:Module

我的模块是talent/profile/header_helper.rb

module Talent
  module Profile
    module HeaderHelper
      def display_experience(talent)
        talent.years_of_experience.present?  ? "#{talent.years_of_experience} #{t('.experience_years')}" : default_message
      end

      def default_message
        "No especificado"
      end
    end
  end 
end

这个助手错了,因为人才是路线中的命名空间而不是嵌套资源。

我修正了将帮助程序更改为:

的问题

talent/profile/header_helper.rb

module Talent::Profile
  module HeaderHelper
    def display_experience(talent)
      talent.years_of_experience.present?  ? "#{talent.years_of_experience} #{t('.experience_years')}" : default_message
    end

    def default_message
      "No especificado"
    end
  end
end

修复了问题。