最初に、一見簡単な質問で申し訳ありませんが、Rails、Ruby、およびプログラミングに不慣れな私は、そこにある「Rails の新機能」チュートリアルを使い果たしたように感じます。
これが私が反対しているものです。
「has_many :through => :company_reps」関係を持つユーザー モデルと機関モデルがあります。
ユーザーには基本的なフィールド (名前、電子メール、パスワード) があります (私は devise を使用しています)
インスティテューションには多くのフィールドがありますが、関連するフィールドは次のとおりです (client = boolean, lead = boolean, demo_date = date/time) さらに複雑にするために、各インスティテューションには 1 人または 2 人のユーザーがいる可能性がありますが、ほとんどの場合、1 人しかいません。
ユーザー向けのコンテストを開催しており、demo_date フィールドと client フィールドに基づいて各ユーザーにポイントを付与する必要があります。
最初に、クライアントである機関に関連する 10 ポイントを各ユーザーに与える必要があります。ただし、その機関に 2 人のユーザーがいる場合は、その 2 人のユーザーにそれぞれ 5 ポイントを与える必要があります。
次に、デモ日が 2012 年 2 月以降の機関に関連するすべてのユーザーに 1 ポイントを与える必要があります。
Ruby 1.9.2、Rails 3.2.8、および MySQL を使用しています
- では、どうすればこれを達成できますか?
- ポイントを保存するために新しいテーブルとモデルを作成する必要がありますか? その場合、計算を保存するにはどうすればよいですか?
- すべての計算をユーザー モデルまたは機関モデルに入れる必要がありますか?
いつも助けてくれてありがとう。
MySQL 機関情報
CREATE TABLE `institutions` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`state_id` int(11) DEFAULT NULL,
`company` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`clientdate` datetime DEFAULT NULL,
`street` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`city` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`zip` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`source` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`source2` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`demodate1` datetime DEFAULT NULL,
`demodate2` datetime DEFAULT NULL,
`demodate3` datetime DEFAULT NULL,
`client` tinyint(1) DEFAULT NULL,
`prospect` tinyint(1) DEFAULT NULL,
`alead` tinyint(1) DEFAULT NULL,
`notcontacted` tinyint(1) DEFAULT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7805 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
機関モデル
class Institution < ActiveRecord::Base
attr_accessible :company, :phone, :assets, :clientdate, :street, :city, :state_id, :zip, :source, :source2, :demodate1, :demodate2, :demodate3, :client, :prospect, :alead, :notcontacted
belongs_to :state
has_many :users, :through => :company_reps
has_many :company_reps
end
ユーザーモデル
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable,
# :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me, :first_name, :last_name
# attr_accessible :title, :body
has_many :states, :through => :rep_areas
has_many :institutions, :through => :company_reps
has_many :rep_areas
has_many :company_reps
def name
first_name + " " + last_name
end
end
会社の担当者のモデル
class CompanyRep < ActiveRecord::Base
belongs_to :user
belongs_to :institution
end