У меня есть приложение Rails 2.3, которое отслеживает членов организации и определяет, есть ли у них платное членство.Некоторые участники могут не иметь платного членства, некоторые могут иметь платное членство на 1 год, а некоторые могут иметь пожизненное членство.Мы хотим записать историю членства участника.
В настоящее время у меня есть следующие (соответствующие) модели и схемы:
class Member < ActiveRecord::Base
has_many :memberships
end
class Membership < ActiveRecord::Base
belongs_to :member
end
create_table "members", :force => true do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "memberships", :force => true do |t|
t.string "name"
t.integer "member_id"
t.datetime "end_date"
t.boolean "lifetime"
end
В настоящий момент мы определяем, является ли клиент текущим членом вПредставление, которое, конечно, не является лучшей практикой, поэтому мы хотим перенести логику в модель.Код в представлении:
<% if @memberships.count == 0 %>
This member has never had a paid membership
<% else %>
<% if @memberships.last.lifetime? %>
This member is a lifetime member
<% else %>
<% if @memberships.last.end_date < Time.now %>
This member's membership has expired
<% else %>
<% if @memberships.last.end_date > Time.now %>
This member is a current member
<% end %>
<% end %>
<% end %>
<% end %>
Мне бы хотелось (например) метод current_member и метод life_member в классе Member, который будет возвращать true или false.У меня была попытка сделать это, но я не уверен, что это лучший способ сделать это.
Есть предложения?