在ActiveRecord模型中,它是否也被认为是最佳实践/必须在使用validates_presence_of时使用validates_length_of?
例如:
class Company < ActiveRecord::Base
validates_presence_of :name
validates_length_of :name, :in => 5..30
end
Run Code Online (Sandbox Code Playgroud)
对我来说,这似乎是多余的.长度在5到30之间意味着该属性也存在,但我看到这在任何地方都使用.它还意味着当真正只需要一个属性时,用户会收到两条关于相同缺失属性的错误消息.
我是否遗漏了某些内容,或者在验证数据时人们是否过于热心?
rails 2.3.4,sqlite3
我正在尝试这个
Production.find(:all,:conditions => ["time>?",start_time.utc],:order =>"time DESC",:limit => 100)
该条件完美的作品,但我在使用的问题:为了=>时间DESC.
偶然的机会,我发现它在Heroku(用heroku控制台测试)上运行,它运行PostgreSQL.但是,在本地,使用sqlite3,新条目将在旧条目之后排序,无论我设置的时间如何.像这样(输出已被手动剥离):第二个条目是新的:
生产编号:2053939460,时间:"2010-04-24 23:00:04",created_at:"2010-04-24 23:00:05"
制作编号:2053939532,时间:"2010-04-25 10:00:00",created_at:"2010-04-27 05:58:30"
生产编号:2053939461,时间:"2010-04-25 00:00:04",created_at:"2010-04-25 00:00:04"
生产编号:2053939463,时间:"2010-04-25 01:00:04",created_at:"2010-04-25 01:00:04"
似乎它对主键,id,而不是时间进行排序.请注意,查询在heroku上运行正常,返回正确排序的列表!我喜欢sqlite,它是如此亲吻,我希望你能帮助我......
有什么建议?
UPDATE/SOLVED:
time是一个保留的sqlite3关键字(日期,其中也是如此).这就是为什么:order => 'time DESC'在PostgreSQL(非保留关键字)中工作,而不是在sqlite3中.解决方案是避免将sqlite3关键字用作列名,如果您打算对它们进行排序的话.重命名解决了这个问题.
我已经使用标准的rails模式updated_at和created_at进行了测试,结果很好.
我仍然喜欢开发中的sqlite3,使用起来非常简单顺畅,复制数据库并发送给你的合作伙伴.感谢@newtover!
大家好,有一个应用程序,可以在SD卡上保存音频.我创建了一个listview,它从sdcard中检索文件名.我正在尝试设置一个监听器,所以当单击文件名时,我可以启动另一个播放该文件的意图.当我尝试设置监听器并传入一个新的OnItemClickListener()时,eclipse是红色的下划线.我知道我必须实现onItemclick(),这是我认为应该去的地方.有任何想法吗?
谢谢
码:
package com.tecmark;
import java.io.File;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
public class SdGetList extends Activity {
private ListView lv1;
private String[] lv_arr;
private ArrayList<String> arr;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.listlayout);
arr = new ArrayList<String>();
File sdCardRoot = Environment.getExternalStorageDirectory();
Log.i("root on sd =", ""+ sdCardRoot.getPath());
for (File f : sdCardRoot.listFiles()) {
if (f.isFile()){
String name = f.getName();
arr.add(name);
Log.i("arr is empty?******", …Run Code Online (Sandbox Code Playgroud) 我在我的应用程序中实现了Twitter,我在Callback中面临问题.
Twitter API最近已更新,因此我无法发送回调URL.
此外,设置页面现在更改,没有选择基于Web的应用程序或桌面应用程序的选项.
如果我在此行发送回调:
authUrl = provider.retrieveRequestToken(consumer,CALLBACK_URL);
Run Code Online (Sandbox Code Playgroud)
它总是回归
oauth.signpost.exception.OAuthNotAuthorizedException: Authorization failed (server replied with a 401). This can happen if the consumer key was not correct or the signatures did not match.
Run Code Online (Sandbox Code Playgroud)
但是如果我在其重定向到Twitter登录页面中将Null作为Null发送,但在成功授权后它不会返回到我的应用程序.
显示Pin编号后,我想重定向回我的应用程序.
注意:Twitter已经更新了他们的API,因此Post中提供的旧代码无效.
我尝试了所有以下链接
链路1, 链路2, 链路3, 链路4, Link5, 链路6
我的守则如下:
public class Main extends Activity {
OAuthConsumer consumer;
OAuthProvider provider;
Twitter twitter;
private static String CALLBACK_URL = "twitterapptest://connect";
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle); …Run Code Online (Sandbox Code Playgroud) 我有两个按钮和一个 mapView。当我按下其中一个按钮时,我想保存 MapView 的视图。
任何人都知道我该如何做到这一点?
我有两个问题:
我正在尝试从MySQL表中选择多行的所有字段.我的一个字段被调用publication_date,它存储一个字符串,表示要在我们的网站上发布特定行的日期.它以mm/dd/yyyy格式存储.
我知道我可以DATE使用CAST 将该字段转换为数据类型,但我不知道如何获取其他字段的数据.
有时使用标准活动方法来创建ContextMenu是不方便的(因为在一个活动中可能有很多地方但在不同的类中需要显示上下文菜单).
但是从任何地方创建对话框都很容易.如何创建与ContextMenu完全相同的对话框?我在哪里可以找到标准上下文菜单的布局或类似的东西?
我正在尝试构建自己的rpm包并且有一些疑问.
首先,在一些地方,我已经红了,不应该以root身份构建rpms.这是为什么?在构建过程中,rpmbuild必须经过安装阶段才能将文件安装到系统中.
据我所知,如果我不是根,我不能这样做.rpmbuild进程完成但出错.那么,问题是如果真的有可能在没有安装内容的情况下构建rpm吗?或者最终我必须成为root才能完成构建过程?
我将一些DateTime存储在CSV日志中:
DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fff")
Run Code Online (Sandbox Code Playgroud)
当我尝试阅读它时,我发现了类似的东西:
"05/15/2012 10:09:28.650"
Run Code Online (Sandbox Code Playgroud)
问题是当我尝试再次将其作为DateTime投射时......
DateTime.Parse("05/15/2012 10:09:28.650");
Run Code Online (Sandbox Code Playgroud)
引发异常"无效的DateTime"或类似的东西......
如何正确重新阅读DateTime?