所以我是RoR的新手,并且不确定我正在尝试做什么的正确方法。所以这就是我所拥有的:
class Artist < ActiveRecord:Base
def self.search(search)
Artist.create(:artist_name => x, artist_info => ... etc)
我为了简单而缩短了它,但你明白了。现在我有另一个名为“Album”的模型。我想在艺术家旁边创建一个Album数据库条目,但我只是将其创建为Albums.create(...)
,因为我不在Albums类中。是否可以在Artist中的search
方法中调用Albums类中的函数?
类似的东西:
class Artist < ActiveRecord:Base
def self.search(search)
Artist.create(:artist_name => x, artist_info => ... etc)
Albums.method(search)
Class Album < ActiveRecord:Base
def self.method(search)
etc
答案 0 :(得分:1)
Rails执行此操作的方法是设置关系并使用它们创建关联记录:
class Artist
has_many :albums
end
class Album
belongs_to :artist
end
创建艺术家时,如果要创建两者:
Artist.transaction do
artist = Artist.create!(
artist_name: x,
artist_info: y
)
album = artist.albums.create!(...)
end
您通常希望在事务中执行此操作,以避免在出现错误的情况下使用半成品记录混乱方法。
我不确定你为什么在这里使用method
,这不是你应该用作名字的东西,它是由Ruby保留的。实际上并没有调用该方法,它只返回有关它的信息。
只要他们不是private
或protected
,一个班级就无法在另一个班级上调用方法,这是没有理由的。有时它不是一个好主意,因为这是一个更好的方法。
答案 1 :(得分:0)
我实际上找到了答案。对于搜索相同问题的任何人,您可以通过&#34; class&#34; .method调用其他方法。所以在我的情况下,它将是Album.method(search)