Hatena::ブログ(Diary)

satake7’s memo このページをアンテナに追加 RSSフィード

2008-05-20 Rails初心者Tips

Railsでテーブルを作るときの注意

ActiveRecordで予約されたメソッド名をテーブルのフィールド名として使うとエラーになるので注意しましょう。

「SELECT * FROM」を使わないで、「SELECT attributes as attr FROM」というように別名を定義して使えばいいらしいですが、最初から予約メソッド名は使わないほうが吉なので「使ってはいけないカラム(フィールド)名一覧」を自分用メモとして貼っておきます。

ActiveRecordで使ってはいけないカラム(フィールド)名一覧

 ======~
[][]=
__id____send__`
acts_like?after_createafter_destroy
after_saveafter_updateafter_validation
after_validation_on_createafter_validation_on_updateallow_concurrency
attribute_for_inspectattribute_namesattribute_present?
attribute_types_
cached_by_default
attributesattributes=
attributes_before_type_cast
b64encodebecomesbefore_create
before_destroybefore_savebefore_update
before_validationbefore_validation_on_createbefore_validation_on_update
binding_nblank?breakpoint
classclearclear_aggregation_cache
clear_association_cacheclonecolorize_logging
column_for_attributeconditionsconfigurations
connectioncopy_instance_variables_from
daemonizedclonedebugger
decode64decode_bdecrement
decrement!default_timezonedestroy
destroy_with_callbacksdestroy_with_transactionsdestroy_without_callbacks
destroy_without_
transactions
displaydup
duplicable?
enable_warningsencode64enum_for
eql?equal?errors
extendextend_with_
included_modules_from
extended_by
freezefrom_jsonfrom_xml
frozen?
gem
has_attribute?hash
idid=id_before_type_cast
incrementincrement!inspect
instance_evalinstance_execinstance_of?
instance_valuesinstance_variable_defined?instance_variable_get
instance_variable_setinstance_variablesis_a?
kind_of?
loadlock!lock_optimistically
locking_enabled?logger
methodmethod_missingmethods
new_record?nil?
object_id
pluralize_table_namespretty_inspectpretty_print
pretty_print_cyclepretty_print_inspectpretty_print_
instance_variables
primary_key_prefix_typeprivate_methodsprotected_methods
proxy_ownerproxy_reflectionproxy_target
public_methods
query_attributequoted_id
read_attributeread_attribute_
before_type_cast
readonly!
readonly?record_timestampsreload
remove_subclasses_ofrequirerequire_association
require_dependencyrequire_gemrequire_library_or_gem
require_or_loadresetrespond_to?
respond_to_
without_attributes?
returningrollback_active_
record_state!
savesave!save_with_transactions
save_with_transactions!save_with_validationsave_with_validation!
save_without_transactionssave_without_transactions!save_without_validation
save_without_validation!schema_formatsend
send!silence_stderrsilence_stream
silence_warningssingleton_methodsstart
subclasses_ofsuppress
table_name_prefixtable_name_suffixtaguri
taguri=tainttainted?
targetto_ato_enum
to_jsonto_paramto_query
to_sto_xmlto_yaml
to_yaml_propertiesto_yaml_styletoggle
toggle!transactiontype
unloadableunserializable_attribute?unserialize_attribute
untaintupdate_attributeupdate_attribute_with_
validation_skipping
update_attribute_without_
validation_skipping
update_attributesupdate_attributes!
valid?valid_with_callbacks?valid_without_callbacks?
validatevalidate_on_createvalidate_on_update
verification_timeout
with_optionswrite_attribute

※ このテーブルは「ActiveRecord::Base.instance_methods.sort」で取得したもの(191件)に、こちら(→404 Not Found)に書かれてあった何件かを足してあります。

参考

  1. こちら(→404 Not Found)が元ネタ(オリジナル)です。いつも参考にさせていただいてます。
  2. こちら(→ruby on rails: うる聖やつら)で予約名とぶつかったときの回避法を知りました。
Connection: close