Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails中是否有has#u association?(';association#u name';)方法_Ruby On Rails - Fatal编程技术网

Ruby on rails rails中是否有has#u association?(';association#u name';)方法

Ruby on rails rails中是否有has#u association?(';association#u name';)方法,ruby-on-rails,Ruby On Rails,我只想删除实际属于该对象的资源。例如: Post.all.each do |post| if post.has_method?('name') true else false end end 但是检查关联: Post.all.each do |post| if post.has_many?('tags') true else false end end 或: 可能是(在Rails

我只想删除实际属于该对象的资源。例如:

Post.all.each do |post|
    if post.has_method?('name')
        true
    else
        false
    end
end
但是检查关联:

Post.all.each do |post|
    if post.has_many?('tags')
        true
    else
        false
    end
end
或:

可能是(在Rails 3中)?:

可能是(在Rails 3中)?:


您可以编写自己的方法:

def has_many?(association)
  self.class.reflect_on_all_associations(:has_many).any?{|a| a.name == association}
end

def belongs_to?(association)
  self.class.reflect_on_all_associations(:belongs_to).any?{|a| a.name == association}
end
所以

也可以使用简单的构造:

Post.all.each do |post|
  post.methods.include?('tags') ? true :false
  post.methods.include?('category') ? true :false
  post.methods.include?('name') ? true :false
end
UPD

或者,正如您正确指出的,您可以使用
respond\u to?

 post.respond_to? :comments

您可以编写自己的方法:

def has_many?(association)
  self.class.reflect_on_all_associations(:has_many).any?{|a| a.name == association}
end

def belongs_to?(association)
  self.class.reflect_on_all_associations(:belongs_to).any?{|a| a.name == association}
end
所以

也可以使用简单的构造:

Post.all.each do |post|
  post.methods.include?('tags') ? true :false
  post.methods.include?('category') ? true :false
  post.methods.include?('name') ? true :false
end
UPD

或者,正如您正确指出的,您可以使用
respond\u to?

 post.respond_to? :comments

Post.categories.exists?
如果没有任何
categories
方法,将抛出错误谢谢您的帮助。我实际上使用的是rails 2.x应用程序:(
Post.categories.exists?
如果没有任何
categories
方法,将抛出一个错误谢谢你的帮助。我实际上使用的是rails 2.x应用程序:(哟,这个
怎么样?回复?(:tag)
@Codeglot,
响应?
也将完美地满足您的需求。它与
方法非常相似。包括?
但这个
怎么样呢?响应(:tag)
@Codeglot,
响应?
也将完美地满足您的需求。它与
方法非常相似。包括?
但更短