Rails:从另一个模型调用一个模型。 为什么这不可能?

我有以下型号……

class Room = ? and date <= ?', from_date, to_date).uniq end def self.vacant_rooms(from_date, to_date) self.where.not(id: Room.occupied_rooms(from_date, to_date)) end def self.blahblah(occupancy_count, smoking, from_date, to_date) layouts = Layout.layouts_with_occupancy_count_gt(occupancy_count) Room.rooms_with_smoking(smoking).vacant_rooms(from_date, to_date).joins(layouts) end end 

blahblah方法……

当我试图从irb运行它时,我得到一个错误……“未知类:布局”

1)房间是否“不知道”布局。 我可以不使用这样的其他模型吗? 我该怎么做。

2)理论问题:有一个大的方法定义来获取某些信息更好吗?或者更好的是有很多小的分区方法,并且在一种方法中使用它们来获得更大的数据。 例如…

一个’大’方法:

 def self.find_rooms_with(occupancy_count, smoking, from_date, to_date) Room.vacant_rooms(from_date, to_date).joins(:layout).where('occupancy_count >= ?', occupancy_count).where('smoking = ?', smoking) end 

绝不大,但一切都重新编码。 似乎它不会像DRY那么长时间。

许多小方法:

  def self.blahblah(occupancy_count, smoking, from_date, to_date) layouts = Layout.layouts_with_occupancy_count_gt(occupancy_count) Room.rooms_with_smoking(smoking).vacant_rooms(from_date, to_date).joins(layouts) end 

第二个更容易编码。 它使用3种内置方法定义。 但是,它是否会对第一个产品造成任何性能损失,还是不太理想?

编辑 :回答下面的前两条评论……

当我只输入Layout或ap Layout时,我得到了我的整个布局模型。

 class Layout  :integer, :description => :string, :occupancy_count => :integer, :created_at => :datetime, :updated_at => :datetime } => nil 

并且通过irb,是的,我的意思是rails console。 这里的完整布局模型……

 class Layout = ?', occupancy_count) end end 

1)似乎你没有声明Layout类。

belongs_to类方法需要定义相应的ActiveRecord类。 默认情况下,它应与方法名称匹配( :layout对应于Layout )。