JackDanger / immutable_attributes
- Source
- Commits
- Network (1)
- Issues (0)
- Downloads (0)
- Wiki (1)
- Graphs
-
Tree:
916c1b3
commit 916c1b33d2cf95bbdf6a6e5b95275696062b7582
tree a87f873e91044aa18db76633ac7bf88946d8f824
parent 509c1e9c3236727f7f7395d15b57e2c163f92d58
tree a87f873e91044aa18db76633ac7bf88946d8f824
parent 509c1e9c3236727f7f7395d15b57e2c163f92d58
| name | age | message | |
|---|---|---|---|
| |
.gitignore | ||
| |
Manifest.txt | ||
| |
README | ||
| |
Rakefile | ||
| |
immutable_attributes.gemspec | ||
| |
init.rb | ||
| |
install.rb | ||
| |
lib/ | ||
| |
rails/ | ||
| |
test/ | ||
| |
uninstall.rb |
README
ImmutableAttributes
===================
When you want to prevent certain attributes from being changed once set you can declare them as immutable:
class MyModel < ActiveRecord::Base
attr_immutable :permalink, :param_identifier
end
When MyModel.find(:first).permalink = 'anything' is called it will raise an ImmutableAttributeError
MyModel.new.permalink = 'works!' will properly set the value because the record is unsaved.
If you'd only like this to happen for certain conditions, and want to handle other attribute-writers, too (like
update_attribute), you can use the validation.
validates_immutable :permalink
Configuration options for the validation:
* :message - A customer error message (default is: "can't be changed")
* :if - Specifies a method, proc, or string to call to determine if the validation should occure (e.g., :if =>
:allow_validation or :if => Proc.new{|user| user.signup_step > 2}. The method, proc or string should return or evaluate
to a true or false value.
* :unless - Specifies a method, proc, or string to call to determine if the validation should not occure (e.g., :unless
=> :skip_validation or :unless => Proc.new{|user| user.signup_step <= 2}. The method, proc or string should return or
evaluate to a true or false value.
Created by Jack Danger Canty @ http://6brand.com
Released under the same licence as Rails (MIT)

