为Drupal数据库创建AR模型

时间:2010-06-30 17:48:50

标签: ruby-on-rails database drupal activerecord

如何更改find​​方法的activerecord模型默认行为? 例如,我想搜索drupal nodes数据库中的所有书籍,但是drupal只对所有数据使用一个表,并使用'type'列来查找类型

class Book < ActiveRecord::Base
  set_table_name 'node'

  def find(*args)
    :conditions => {:type => 'book'}
    super
  end
end

这是解决这个问题的正确方法吗?

1 个答案:

答案 0 :(得分:1)

我已经解决了这个问题,为Node创建了一个模型并使用了named_scopes

结果就是这个

class Node
  set_table_name 'node'
  set_primary_key 'nid'
  named_scope :book, :conditions => {:type => 'book'}

  # if i don't overwrite this method, i would get an error when i try to use the type column
  def self.inheritance_column
    "rails_type"
  end
end

它有效,但看起来不像做东西的轨道方式。如果我很快就会有时间,我将尝试编写一个库来使用诸如acts_as_drupal_node

之类的东西来访问drupal数据

现在我可以使用以下方式获取所有图书条目:

@books = Node.book.all