How does one add an attribute to a model?

别来无恙 提交于 2019-11-27 05:18:56

问题


In rails I generate a model with two strings and would like to add more. How would I go about doing this?


回答1:


Active Record maps your tables columns to attributes in your model, so you don't need to tell rails that you need more, what you have to do is create more columns and rails is going to detect them, the attributes will be added automatically.

You can add more columns to your table through migrations:

rails generate migration AddNewColumnToMyTable column_name:column_type(string by default)

Example:

rails generate migration AddDataToPosts views:integer clicks:integer last_reviewed_at:datetime 

this will generate a file:

db/2017.....rb

Open it and add modify it if needed:

self.up
  #add_column :tablename, :column_name, :column_type
  add_column :posts, views, :integer
  add_column :posts, clicks, :integer, default: 0
end

Hope this helps.




回答2:


Yes, the solution by @JCorcuera is applicable, but I suggest applying a little more information to Rails to fulfill our requirement. Try this approach:

rails generate migration add_columnname_to_tablename columnname:datatype

For example:

rails generate migration add_password_to_users password:string



回答3:


If you are using the Rails 4.x you can now generate migrations with references, like this:

rails generate migration AddUserRefToProducts user:references

like you can see on rails guides




回答4:


Just to make it even simpler you can do:

rails g migration add_something_to_model something:string something_else:integer


来源:https://stackoverflow.com/questions/6373202/how-does-one-add-an-attribute-to-a-model

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!