频道栏目
首页 > 程序开发 > 综合编程 > 其他综合 > 正文
模型层的写作风格以及through
2013-04-24 08:51:35           
收藏   我要投稿

# -*- coding: utf-8 -*-
class User < ActiveRecord::Base

  -----------------------------


  include Activity::UserMethods
end

---------------------------------------------------------------------------------------------------------


class Activity < ActiveRecord::Base

  attr_accessible :title, :content, :start_time, :end_time

  belongs_to :creator, :class_name => 'User', :foreign_key => :creator_id

  validates  :creator, :presence => true
  validates  :title,   :presence => true
  validates  :content, :presence => true

  validates :start_time, :end_time, :presence => true

  validate :validate_start_and_end_time

  def validate_start_and_end_time
    errors.add(:base,'开始时间必须早于结束时间') if self.start_time > self.end_time
  end

  module UserMethods
    def self.included(base)
      base.has_many :activities, :foreign_key => :creator_id
    end
  end

  include ActivityMembership::ActivityMethods

end

---------------------------------------------------------------------------------------------------------


class ActivityMembership < ActiveRecord::Base
  attr_accessible :activity, :user

  belongs_to :user
  belongs_to :activity, :foreign_key => :activity_id

  validates  :user,     :presence => true
  validates  :activity, :presence => true

 

  module ActivityMethods
    def self.included(base)
      base.send :include, InstanceMethods
      base.has_many :activity_memberships
      base.has_many :members, :through => :activity_memberships, :source => :user
    end

    module InstanceMethods
      def add_member(user)
        self.activity_memberships.create :user => user
      end

      def remove_member(user)
        self.activity_memberships.where(:user_id=>user.id).destroy_all
      end
    end
  end
end


 

点击复制链接 与好友分享!回本站首页
相关TAG标签 模型 风格
上一篇:迷宫中回溯法的剪枝——奇偶剪枝
下一篇:导出Excle文件中数据到数据集
相关文章
图文推荐
文章
推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站