rails 常用方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rails 常用方法相关的知识,希望对你有一定的参考价值。

bundle install --without production  不安装production中的gem


./configure && make && sudo make install  把源代码编译成可执行的程序


$ bundle exec rake -T db  可查看所有与数据库相关的任务,rake db:就是用来管理数据库的,是数据库不是表

rake -T 查看所rake 命令

heroku run rake db:migrate

bundle exec rake db:migrate VERSION=0  数据库回退到指定版本,0就是数据库最开始的状态

超链接
show  <%= link_to user.name, user %>
delete  <%= link_to "delete", user, method: :delete,  data: { confirm: "You sure?" } %>
edit   <%= link_to "Settings", edit_user_path(current_user) %>

生产环境

rails s --environment  production
bundle  exec  rake db:migrate RAILS_ENV = production
bundle exec rake db:migrate:reset   删除数据库中数据

调试
debugger

测试
页面内容测试(view),数据库数量/内容测试(model),controller测试

先单元测试,测试单个功能。再从页面考虑,根据行为,集成测试
rails g integration_test signup
rake  test:integration
bundle exec rake test TEST=test/integration/users_login_test.rb
bundle exec rake test TEST=test/integration/users_login_test.rb  TESTOPTS="--name test_login_with_valid_information"

测试中cookies中不能使用符号键,但可以实用字符串键   cookies[:key]会返回nil    cookies[key]会返回正确的值

测试中可以实用assigns获取controller中的实例变量,比如@user,test中assgins(:user)


安全随机数
SecureRandom.urlsafe_base64  返回A-Z a-z 0-9 -_    长度为22的随机字符串,每一位有64种可能


cookie
cookies[:remember_token] = { value: remember_token,   expires: 20.years.from_now.utc }
cookies.permanent[:remember_token] = remember_token    permanent  rails会自动将时间设为20年之后


cookies.signed[:user_id] = user.id     存入浏览器前,安全加密cookie
cookies.permanent.signed[:user_id] = user.id

User.find_by(id: cookies.signed[:user_id])
BCrypt::Password.new(remember_digest).is_password?(remember_token)

辅助方法
1.year.from_now           10.weeks.ago               1.kilobyte               5.megabytes

类方法
def self.new_token
SecureRandom.urlsafe_base64
end

class User < ActiveRecord::Base

class << self

def digest(string)
cost = ActiveModel::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST :
BCrypt::Engine.cost
BCrypt::Password.create(string, cost: cost)
end

def new_token
SecureRandom.urlsafe_base64
end

end



Active Record
new_record? 检测对象是新创建,还是已经存在于数据库


路由
创建是post,编辑是patch。  构建form_for(@user)表单,根据@user.new_record?判断该发送什么请求

局部模板
rails将@users组成user对象列表,传给render后,rails会自动遍历这个列表,然后使用局部视图_user.html.haml渲染每个对象
一。<ul class="users">
<%= render @users %>
</ul>

_user.html.erb
<li>
<%= gravatar_for user, size: 50 %>
<%= link_to user.name, user %>
</li>
二。
局部模板名没必要_user,如果@users.each do |foobar|,则是render foobar
<ul class="users">
<% @users.each do |user| %>
<%= render user %>
<% end %>
</ul>


bundle exec
bundle exec annotate  

 

以上是关于rails 常用方法的主要内容,如果未能解决你的问题,请参考以下文章

C#常用代码片段备忘

rails 常用方法

IOS开发-OC学习-常用功能代码片段整理

如何使控制台中的视图缓存片段过期?

为 memcached 和 Rails 组合片段和对象缓存的最佳方式

ruby RubySteps 012 - Rails - 迷你框架片段