2011-10-23 29 views
8

Tôi muốn giới hạn số lượng đối tượng mô hình mà người dùng có thể tạo. Tôi đã thử dưới đây nhưng nó không hoạt động. Tôi hiểu một số thay đổi đã xảy ra trong đường ray 3.1 và không chắc chắn cách thực hiện điều này ngay bây giờ.Rails 3.1 giới hạn đối tượng được tạo bởi người dùng

class User < ActiveRecord::Base 
    has_many :things, :limit => 5, :dependent => :destroy # This doesn't work 
end 

class Things <ActiveRecord::Base 
    belongs_to :user 
end 

Trả lời

14

Hãy thử một cái gì đó như thế này:

class User < ActiveRecord::Base 
    has_many :things 
end 

class Things <ActiveRecord::Base 
    belongs_to :user 
    validate :thing_count_within_limit, :on => :create 

    def thing_count_within_limit 
    if self.user.things(:reload).count >= 5 
     errors.add(:base, "Exceeded thing limit") 
    end 
    end 
end 

Sửa: cập nhật cho Rails 3

+1

Tôi đang sử dụng Rails 3.1 và nhận "phương thức chưa xác định' validate_on_create 'cho # " – user892583

+0

Xem chỉnh sửa ở trên .. –

+0

Điều đó đã làm được điều đó! cảm ơn rất nhiều! – user892583

3

Nó không làm việc on Rails 3.2.1. Đếm luôn bằng 0. Tôi đã thay thế nó bằng self.user.things.size và bây giờ nó hoạt động.

Các vấn đề liên quan