I take naming pretty seriously, so I think pretty hard about good names for my ActiveRecord models. However, I frequently come up with a name and it has some conflict with a reserved name, either in the database or Ruby or Rails. Model or field names like set
or group
. Sometimes the issue isn't immediately apparent either. Is there a list somewhere of names we can't use in our model names and a list for field names?
Here's a couple of resources to get you started:
Rails reserved words. This one seems to be fairly up to date, last updated on Feb 2010. It even goes beyond rails and lists some common naming conflicts with SQL.dead- Reserved words in rails. Here lives a heroku application featuring a searchable table of reserved rails words. The content on this one seems to be user-managed, so anybody with an account can add a new word.
Column name type
is also reserved and does not show in the list of MyModel.methods
!
The single-table inheritance mechanism failed to locate the subclass: 'f'. This error is raised because the column 'type' is reserved for storing the class in case of inheritance. Please rename this column if you didn't intend it to be used for storing the inheritance class or overwrite Project.inheritance_column to use another column for that information.
Does anyone have experience with names like category
, class
, transaction
, group
, etc.? All pop into mind when I'm categorising data within my db....
Here's the list as of Rails 5.1.5:
!
!=
!~
<=>
==
===
=~
[]
[]=
__binding__
__callbacks
__callbacks?
__id__
__send__
_before_commit_callbacks
_before_commit_without_transaction_enrollment_callbacks
_commit_callbacks
_commit_without_transaction_enrollment_callbacks
_create_callbacks
_destroy
_destroy_callbacks
_find_callbacks
_initialize_callbacks
_read_attribute
_reflections
_reflections?
_rollback_callbacks
_rollback_without_transaction_enrollment_callbacks
_run_before_commit_callbacks
_run_before_commit_without_transaction_enrollment_callbacks
_run_commit_callbacks
_run_commit_without_transaction_enrollment_callbacks
_run_create_callbacks
_run_destroy_callbacks
_run_find_callbacks
_run_initialize_callbacks
_run_rollback_callbacks
_run_rollback_without_transaction_enrollment_callbacks
_run_save_callbacks
_run_touch_callbacks
_run_update_callbacks
_run_validate_callbacks
_run_validation_callbacks
_save_callbacks
_touch_callbacks
_update_callbacks
_validate_callbacks
_validation_callbacks
_validators
_validators?
`
accessed_fields
acts_like?
add_to_transaction
aggregate_reflections
aggregate_reflections?
as_json
assign_attributes
association
association_cached?
attribute_aliases
attribute_aliases?
attribute_before_last_save
attribute_change
attribute_change_to_be_saved
attribute_changed?
attribute_changed_in_place?
attribute_for_inspect
attribute_in_database
attribute_method_matchers
attribute_method_matchers?
attribute_missing
attribute_names
attribute_present?
attribute_previously_changed?
attribute_was
attributes
attributes=
attributes_before_type_cast
attributes_changed_by_setter
attributes_in_database
becomes
becomes!
before_committed!
blank?
byebug
cache_key
cache_timestamp_format
cache_timestamp_format?
changed
changed?
changed_attribute_names_to_save
changed_attributes
changed_for_autosave?
changes
changes_applied
changes_internally_applied
changes_to_save
class
class_eval
clear_attribute_changes
clear_changes_information
clone
column_for_attribute
committed!
connection_handler
debugger
decrement
decrement!
deep_dup
default_connection_handler
default_connection_handler?
default_scope_override
default_scopes
default_timezone
define_singleton_method
defined_enums
defined_enums?
delete
destroy
destroy!
destroyed?
destroyed_by_association
destroyed_by_association=
display
dump_schema_after_migration
dump_schemas
dup
duplicable?
encode_with
enum_for
eql?
equal?
error_on_ignored_order
error_on_ignored_order_or_limit
errors
extend
freeze
from_json
frozen?
gem
has_attribute?
has_changes_to_save?
hash
html_safe?
id
id=
id?
id_before_type_cast
id_in_database
id_was
in?
include_root_in_json
include_root_in_json?
increment
increment!
index_nested_attribute_errors
init_with
initialize_internals_callback
inspect
instance_eval
instance_exec
instance_of?
instance_values
instance_variable_defined?
instance_variable_get
instance_variable_names
instance_variable_set
instance_variables
invalid?
is_a?
itself
kind_of?
load_dependency
lock!
lock_optimistically
lock_optimistically?
locking_enabled?
logger
mark_for_destruction
marked_for_destruction?
method
method_missing
methods
model_name
nested_attributes_options
nested_attributes_options?
new_record?
nil?
no_touching?
object_id
partial_writes
partial_writes?
persisted?
pluralize_table_names
pluralize_table_names?
populate_with_current_scope_attributes
presence
presence_in
present?
pretty_inspect
pretty_print
pretty_print_cycle
pretty_print_inspect
pretty_print_instance_variables
previous_changes
primary_key_prefix_type
private_methods
protected_methods
pry
public_method
public_methods
public_send
query_attribute
quoted_id
raw_write_attribute
read_attribute
read_attribute_before_type_cast
read_attribute_for_serialization
read_attribute_for_validation
readonly!
readonly?
record_timestamps
record_timestamps=
record_timestamps?
reload
remote_byebug
remove_instance_variable
require_dependency
require_or_load
respond_to?
respond_to_without_attributes?
restore_attributes
rollback_active_record_state!
rolledback!
run_callbacks
save
save!
saved_change_to_attribute
saved_change_to_attribute?
saved_changes
saved_changes?
schema_format
send
serializable_hash
singleton_class
singleton_method
singleton_methods
skip_time_zone_conversion_for_attributes
skip_time_zone_conversion_for_attributes?
slice
store_full_sti_class
store_full_sti_class?
suppress_warnings
table_name_prefix
table_name_prefix?
table_name_suffix
table_name_suffix?
taint
tainted?
tap
time_zone_aware_attributes
time_zone_aware_types
time_zone_aware_types?
timestamped_migrations
to_enum
to_gid
to_gid_param
to_global_id
to_json
to_key
to_model
to_param
to_partial_path
to_query
to_s
to_sgid
to_sgid_param
to_signed_global_id
to_yaml
toggle
toggle!
touch
touch_later
transaction
trust
try
try!
type_for_attribute
unloadable
untaint
untrust
untrusted?
update
update!
update_attribute
update_attributes
update_attributes!
update_column
update_columns
valid?
validate
validate!
validates_absence_of
validates_acceptance_of
validates_confirmation_of
validates_exclusion_of
validates_format_of
validates_inclusion_of
validates_length_of
validates_numericality_of
validates_presence_of
validates_size_of
validates_with
validation_context
warn_on_records_fetched_greater_than
will_save_change_to_attribute?
with_lock
with_options
with_transaction_returning_status
write_attribute
yield_self
You can get it with
ActiveRecord::Base.instance_methods.sort
Open a rails console and a type MyModel.methods
All the methods listed are reserved words.
来源:https://stackoverflow.com/questions/13750009/reserved-names-with-activerecord-models