代码之家  ›  专栏  ›  技术社区  ›  Mithun Sreedharan Kuldeep Modi

ROR-模型关系

  •  0
  • Mithun Sreedharan Kuldeep Modi  · 技术社区  · 14 年前

    hi有一个名为category的表,它有两个表用户的外键,结构如下所示。如何使用关系获取创建人和修改人对应的用户名? @category = Category.find(params[:id]) 只提供类别表中的详细信息。我现在的模型课是

    class Category < ActiveRecord::Base
      validates_uniqueness_of :title, :message => "Title already exist"
      validates_presence_of :title, :message => "Cannot be blank"
      belongs_to :user
    end
    

    如何将“创建人”和“修改人”字段与用户模型关联

    CREATE TABLE IF NOT EXISTS `categories` (
      `id` int(11) unsigned NOT NULL auto_increment,
      `title` varchar(255) NOT NULL,
      `created_by` int(11) unsigned default NULL,
      `modified_by` int(11) unsigned default NULL,
      `created` datetime NOT NULL,
      `modified` timestamp NOT NULL default CURRENT_TIMESTAMP,
      PRIMARY KEY  (`id`),
      UNIQUE KEY `created_by` (`created_by`),
      UNIQUE KEY `modified_by` (`modified_by`)
    
    CREATE TABLE IF NOT EXISTS `users` (
      `id` int(11) unsigned NOT NULL auto_increment,
      `username` varchar(25) NOT NULL,
      `password` varchar(255) NOT NULL,
      `usertype_id` int(11) unsigned NOT NULL,
      `active` tinyint(1) NOT NULL,
      `created` datetime NOT NULL,
      `modified` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
      PRIMARY KEY  (`id`),
      UNIQUE KEY `usertype_id` (`usertype_id`)
    )
    
    
    --
    -- Constraints for table `categories`
    --
    ALTER TABLE `categories`
      ADD CONSTRAINT `categories_ibfk_1` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE,
      ADD CONSTRAINT `categories_ibfk_2` FOREIGN KEY (`modified_by`) REFERENCES `users` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE;
    
    1 回复  |  直到 14 年前
        1
  •  1
  •   Swanand    14 年前

    这应该对你有用:

    class Category < ActiveRecord::Base
      # ...
      validates_uniqueness_of :title, :message => "Title already exist"
      validates_presence_of :title, :message => "Cannot be blank"
      belongs_to :creator, :foreign_key => 'created_by', :class_name => 'User'
      belongs_to :editor, :foreign_key => 'modified_by', :class_name => 'User' 
      # ...
    end
    
    class User < ActiveRecord::Base
      # ...
      has_many :created_categories, :class_name => 'Category', :foreign_key => 'created_by'                                                                                
      has_many :modified_categories, :class_name => 'Category', :foreign_key => 'modified_by'
      # ...
    end