Ruby on rails 当关系深入到2-3层时,与人的斗争有很多,并且属于交往
我对Rails和建立关联非常陌生,所以我怀疑我遗漏了一些非常明显的东西。我正在尝试建立一个应用程序,其中一个模型有两个模型,它有很多。第二种模式属于第一种模式,并且有许多第三种模式。第三个可以属于第一个模型,也可以属于第二个模型 具体来说,我有一个墙模型,可以容纳图片和拼贴。墙上可以挂图片或拼贴,也可以不挂。拼贴可以容纳图片Ruby on rails 当关系深入到2-3层时,与人的斗争有很多,并且属于交往,ruby-on-rails,ruby,activerecord,associations,Ruby On Rails,Ruby,Activerecord,Associations,我对Rails和建立关联非常陌生,所以我怀疑我遗漏了一些非常明显的东西。我正在尝试建立一个应用程序,其中一个模型有两个模型,它有很多。第二种模式属于第一种模式,并且有许多第三种模式。第三个可以属于第一个模型,也可以属于第二个模型 具体来说,我有一个墙模型,可以容纳图片和拼贴。墙上可以挂图片或拼贴,也可以不挂。拼贴可以容纳图片 class Wall < ActiveRecord::Base belongs_to :user has_many :collages has_many :pictu
class Wall < ActiveRecord::Base
belongs_to :user
has_many :collages
has_many :pictures
end
class Collage < ActiveRecord::Base
belongs_to :user
belongs_to :wall
has_many :pictures
end
class Picture < ActiveRecord::Base
belongs_to :user
belongs_to :wall
belongs_to :collage
end
class-Wall
我得到的错误告诉我:
#Wall的未定义方法“picture”
我正在创建的关联是否有什么问题?
在任何模型上都有许多关联
给出了该方法的复数形式
因此,Wall类的方法#pictures
可通过此行获得:
如果您希望#picture
方法可用,您应该使用关联,因为属于
如果您告诉我们这个错误是在哪里发生的,以及您要实现的功能,我们可以对这个问题进行更多的调试
图片类的名称也应该大写p@cvibha
的答案应该可以帮助您进行关联
但是,还有一个问题你可能需要考虑。您正在调用此方法:
undefined method `picture?' for #Wall
Rails关联基本上根据您定义关联的方式创建记录(有许多:图片
创建@wall.pictures
)。但是,您正在调用picture?
--
如果您有一个名为picture?
的自定义方法,那么它应该可以工作(尽管关联不起作用-如另一个答案中所述)。你的问题是我认为你没有定义picture?
我会这样做:
#app/models/wall.rb
Class Wall < ActiveRecord::Base
...
def picture?
#your code
end
end
应该是Class Picture
和大P
感谢您的更正-这是一个打字错误,而不是问题的根源。
@wall.pictures.any?
@wall.pictures.first.present?